﻿using System.Collections.Generic;

namespace MugenInjection.Infrastructure
{
    /// <summary>
    ///     Provides a value along with a dictionary of metadata describing the value.
    /// </summary>
    /// <typeparam name="T">The type of the value.</typeparam>
    public class WithSettings<T>
    {
        #region Constructors

        /// <summary>
        ///     Initializes a new instance of the <see cref="WithSettings{T}" /> class.
        /// </summary>
        public WithSettings(T value, IDictionary<string, object> settings, IDictionary<string, object> specialParameters)
        {
            Settings = settings;
            SpecialParameters = specialParameters;
            Value = value;
        }

        #endregion

        #region Properties

        /// <summary>
        ///     Gets the value.
        /// </summary>
        public T Value { get; private set; }

        /// <summary>
        ///     Gets the binding settings.
        /// </summary>
        public IDictionary<string, object> Settings { get; private set; }

        /// <summary>
        ///     Gets the special parameters.
        /// </summary>
        public IDictionary<string, object> SpecialParameters { get; private set; }

        #endregion
    }
}